// 节流函数同样使用闭包和计时器（也可以使用Date时间戳）
/**
 * @method 节流函数
 * @param {Function} fn 回调函数
 * @param {Number} delay 时间间隔
 * @returns
 */

// 计时器版本
// function throttle (fn, delay) {
//   let timer = null
//   return function (...args) {
//     // 计时器存在
//     if (timer) return
//     timer = setTimeout(() => {
//       fn.apply(this, args)
//       // 计时器初始化
//       timer = null
//     }, delay)
//   }
// }

// const btn = document.querySelector('button')
// btn.addEventListener('click', throttle(function () {
//   console.log('fn节流执行了')
// }, 1000))


// Date时间戳版本
// 优点，第一次点击立即执行
function otherThrottle (fn, delay) {
  console.log(arguments)
  // 初始时间戳
  let pre = 0
  return function (...args) {
    // 点击按钮时时间戳
    let now = Date.now()
    // 时间间隔
    if (now - pre >= delay) {
      fn.apply(this, args)
      // 更改初始时间
      pre = now
    }
  }
}

const btn = document.querySelector('button')
btn.addEventListener('click', otherThrottle(function () {
  console.log('fn节流执行了')
  console.log(arguments)
}, 1000))
